Computer software programs create, use, and discard software objects at run time and, in some cases, according to run time conditions. When objects are created, memory is allocated for use, and when objects are discarded, the corresponding memory may be deallocated. Memory allocation plays an important role in software application efficiency and scalability.
For software engineers, including developers, programmers, testers and managers, it may be difficult to assess the impact of an application change on memory scalability, in particular for multi-user applications such as web applications. It may also be difficult to compare two or more possible changes to the software code to decide which one is a better change in terms of memory scalability. Further, it may also be difficult to assess memory scalability of a new build. Moreover, it may also be difficult to monitor, at a high level, the trend of the applications for which a software quality assurance manager may be responsible.
One known option to address the above-noted issues is for the software engineer to run experimental load tests of one or more applications, including scenarios of changes made to the applications, and compare or aggregate various measurements. However, running a load test has several disadvantages: it takes a lot of time; it is not easy to do; it uses expensive tools; and it sometimes requires multiple computers, adding to the cost and complexity of running load tests.
Accordingly, it may be desirable to provide for a system to assess the memory impact of one or more application changes without having to run experimental load tests. It may also be desirable to provide for a system to test and verify, in an automated fashion, how a new build is performing and compare it to previous builds on single user application runs. Further, it may also be desirable to provide for a system that can be monitored over time to obtain high level visibility into application memory scalability changes.